/*
 * statistic_info.h
 *
 * Representación de información estadistica sobre sobre uso del CPU y procesos
 *
 */

#ifndef STATISTIC_INFO_H
#define STATISTIC_INFO_H

#include <time.h>

/*
 * Tipo: info de estadístiscas sobre uso del CPU y procesos.
 * El struct es público y no opaco _intencionalmente_. La abstracción es de
 * tupla sin otras operaciones, con lo cual se permite acceso (de lectura)
 * a los campos.
 */
typedef struct {
	long cpu_user, cpu_system, cpu_idle; /* en milisegundos */
	long context_switches;
	long process_count; /* Total creados, no solo los actuales */
	time_t boot_date;
	long disk_requests;
	long memory_available;
	long memory_total;
	float load_average_1;
} StatisticInfo;

StatisticInfo statistic_info_new (const char *proc_dir);
/*
 * Arma un nuevo `StatisticInfo', leyendo datos del procfs montado en
 * proc_dir.
 *   Returns: nueva StatisticInfo
 * REQUIRES:
 *    proc_dir != NULL
 */

void statistic_info_destroy (StatisticInfo self);
/*
 * Destruye `self'.
 *   self: StatisticInfo a destruir
 */

#endif
